package com.tensquare.friend.service;

import com.tensquare.friend.client.UserClient;
import com.tensquare.friend.dao.FriendDao;
import com.tensquare.friend.dao.NoFriendDao;
import com.tensquare.friend.pojo.Friend;
import com.tensquare.friend.pojo.NoFriend;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * Created with IDEA
 * author:zhiXiang-Chen
 * Date:2019/3/7
 * Time:15:58
 */
@Service
public class FriendService {
    @Autowired
    private FriendDao friendDao;

    @Autowired
    private NoFriendDao noFriendDao;
    @Autowired
    private UserClient userClient;


    public int addFriend(String id, String friendid) {
       //1.判断是否添加过
        int count =  friendDao.selectCount(id,friendid);
        if (count>0){
            return  0;
        }

        //2.添加好友 插入一条数据
        Friend friend = new Friend();
        friend.setUserid(id);
        friend.setFriendid(friendid);
        friend.setIslike("0");
        friendDao.save(friend);
        //如果是双喜欢  最后字段要变成1
        if(friendDao.selectCount(friendid,id) > 0){
            friendDao.updateLike(id,friendid,"1");
            friendDao.updateLike(friendid,id,"1");
        }

        //更新粉丝数和关注数
        userClient.incFanscount(friendid,1);//增加对方的粉丝数
        userClient.incFollowcount(id,1);//增加自己的关注数

        return 1;
    }

    /**
     * 添加非好友
     * @param id
     * @param friendid
     */
    public void addNoFriend(String id, String friendid) {
        NoFriend noFriend=new NoFriend();
        noFriend.setUserid(id);
        noFriend.setFriendid(friendid);
        noFriendDao.save(noFriend);
    }

    @Transactional
    public void deleteFriend(String id, String friendid) {

        //1.直接删除  向不喜欢查数据
        friendDao.deleteFriend(id,friendid);

        //不管你是单喜欢还是双喜欢  直接插入0
        friendDao.updateLike(friendid,id,"0");
        //2.双喜欢,删除后  要改最后字段"0"

        //远程调用
        userClient.incFollowcount(id,-1);//减少自己的关注数
        userClient.incFanscount(friendid,-1);//减少对方的粉丝数


        addNoFriend(id,friendid);

    }
}
